package com.ld.poetry.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;

/**
 * 网站信息实体类
 * 
 * 功能说明：
 * 1. 存储网站的基本配置信息
 * 2. 管理网站的展示内容
 * 3. 控制网站的功能开关
 * 
 * 使用场景：
 * 1. 网站基本信息配置
 * 2. 网站内容管理
 * 3. 网站功能控制
 * 
 * 注意事项：
 * 1. 配置信息需要合理管理
 * 2. 敏感信息需要加密存储
 * 3. 配置变更需要及时通知
 * 
 * @author sara
 * @since 2021-09-14
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("web_info")
public class WebInfo implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 网站信息ID
     * 
     * 功能说明：
     * 1. 唯一标识网站信息记录
     * 2. 自增主键
     * 
     * 数据库字段：
     * - 字段名：id
     * - 类型：INT
     * - 约束：主键，自增
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;

    /**
     * 网站名称
     * 
     * 功能说明：
     * 1. 存储网站的名称
     * 2. 用于网站标识
     * 
     * 数据库字段：
     * - 字段名：web_name
     * - 类型：VARCHAR
     * - 约束：可空
     */
    @TableField("web_name")
    private String webName;

    /**
     * 网站标题
     * 
     * 功能说明：
     * 1. 存储网站的标题
     * 2. 用于SEO优化
     * 
     * 数据库字段：
     * - 字段名：web_title
     * - 类型：VARCHAR
     * - 约束：可空
     */
    @TableField("web_title")
    private String webTitle;

    /**
     * 网站公告
     * 
     * 功能说明：
     * 1. 存储网站的公告信息
     * 2. 支持富文本内容
     * 
     * 数据库字段：
     * - 字段名：notices
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("notices")
    private String notices;

    /**
     * 网站页脚
     * 
     * 功能说明：
     * 1. 存储网站的页脚信息
     * 2. 支持HTML内容
     * 
     * 数据库字段：
     * - 字段名：footer
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("footer")
    private String footer;

    /**
     * 网站背景图
     * 
     * 功能说明：
     * 1. 存储网站的背景图片URL
     * 2. 支持多张图片
     * 
     * 数据库字段：
     * - 字段名：background_image
     * - 类型：VARCHAR
     * - 约束：可空
     */
    @TableField("background_image")
    private String backgroundImage;

    /**
     * 网站头像
     * 
     * 功能说明：
     * 1. 存储网站的头像URL
     * 2. 用于网站标识
     * 
     * 数据库字段：
     * - 字段名：avatar
     * - 类型：VARCHAR
     * - 约束：可空
     */
    @TableField("avatar")
    private String avatar;

    /**
     * 随机头像配置
     * 
     * 功能说明：
     * 1. 存储随机头像的配置信息
     * 2. 支持JSON格式
     * 
     * 数据库字段：
     * - 字段名：random_avatar
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("random_avatar")
    private String randomAvatar;

    /**
     * 随机名称配置
     * 
     * 功能说明：
     * 1. 存储随机名称的配置信息
     * 2. 支持JSON格式
     * 
     * 数据库字段：
     * - 字段名：random_name
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("random_name")
    private String randomName;

    /**
     * 随机封面配置
     * 
     * 功能说明：
     * 1. 存储随机封面的配置信息
     * 2. 支持JSON格式
     * 
     * 数据库字段：
     * - 字段名：random_cover
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("random_cover")
    private String randomCover;

    /**
     * 看板娘配置
     * 
     * 功能说明：
     * 1. 存储看板娘的配置信息
     * 2. 支持JSON格式
     * 
     * 数据库字段：
     * - 字段名：waifu_json
     * - 类型：TEXT
     * - 约束：可空
     */
    @TableField("waifu_json")
    private String waifuJson;

    /**
     * 网站状态
     * 
     * 功能说明：
     * 1. 控制网站是否启用
     * 2. 0表示禁用，1表示启用
     * 
     * 数据库字段：
     * - 字段名：status
     * - 类型：TINYINT
     * - 约束：非空，默认1
     */
    @TableField("status")
    private Boolean status;

    /**
     * 历史总访问量
     * 
     * 功能说明：
     * 1. 存储网站历史总访问量
     * 2. 非数据库字段
     */
    @TableField(exist = false)
    private String historyAllCount;

    /**
     * 历史日访问量
     * 
     * 功能说明：
     * 1. 存储网站历史日访问量
     * 2. 非数据库字段
     */
    @TableField(exist = false)
    private String historyDayCount;

    /**
     * 默认存储类型
     * 
     * 功能说明：
     * 1. 存储默认的文件存储类型
     * 2. 非数据库字段
     */
    @TableField(exist = false)
    private String defaultStoreType;
}
